<?php
/**
 * Created by Chongyi
 * Date: 2015/10/7 0007
 * Time: 下午 4:36
 */

namespace App\B2BProject\Foundation\Response;


class CommonJSONDataParser
{
    public static function parse($data)
    {
        if (is_array($data)) {
            // 检查格式是否符合基本规范，所有 ajax、api 返回的 JSON 数据一律需要包含以下参数：
            // message：响应的消息字符串；
            // code：   服务器响应代码，200 - 成功，30x - 重定向操作，40x - 客户端引起的失败，50x - 服务端引起的失败；
            // header： 首部，用于令客户端进行指定操作；
            // body：   消息主体。
            // 其中，message 和 body 要求必须存在，其余可通过 HTTP 协议中的 CODE、HEAD 获取相关信息
            $final = [];
            $append = [];

            foreach ($data as $key => $value) {
                if (in_array($key, ['message', 'body', 'header', 'code'])) {
                    $final[$key] = $value;
                } else {
                    $append[$key] = $value;
                }
            }

            if (!isset($final['message'])) {
                $final['message'] = 'None message';
            }

            if (!isset($final['body'])) {
                $final['body'] = $append;
            }

            if (empty($final['body'])) {
                $final['body'] = 'null';
            }

            return $final;
        } else {
            return ['message' => $data, 'body' => 'null'];
        }
    }
}